@charset "UTF-8";
@import "./checkbox.css";
@import "./tag.css";
@import "./common/var.css";

@component-namespace el {

  @b table {
    position: relative;
    overflow: hidden;
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    background-color: var(--color-white);
    border: 1px solid var(--table-border-color);
    font-size: 14px;
    color: var(--table-text-color);

    &::before {
      content: '';
      position: absolute;
      left: 0;
      bottom: 0;
      width: 100%;
      height: 1px;
      background-color: var(--table-border-color);
      z-index: 1;
    }

    &::after {
      content: '';
      position: absolute;
      top: 0;
      right: 0;
      width: 1px;
      height: 100%;
      background-color: var(--table-border-color);
      z-index: 1;
    }

    .el-tooltip.cell {
      white-space: nowrap;
      min-width: 50px;
    }

    @e empty-block {
      position: relative;
      min-height: 60px;
      text-align: center;
      width: 100%;
      height: 100%;
    }

    @e empty-text {
      position: absolute;
      left: 50%;
      top: 50%;
      transform: translate(-50%, -50%);
      color: color(var(--color-primary) s(16%) l(44%));
    }

    @e expand-column {
      .cell {
        padding: 0;
        text-align: center;
      }
    }

    @e expand-icon {
      position: relative;
      cursor: pointer;
      color: #666;
      font-size: 12px;
      transition: transform 0.2s ease-in-out;
      height: 40px;

      @m expanded {
        transform: rotate(90deg);
      }

      > .el-icon {
        position: absolute;
        left: 50%;
        top: 50%;
        margin-left: -5px;
        margin-top: -5px;
      }
    }

    @e expanded-cell {
      padding: 20px 50px;
      background-color: var(--color-dark-white);
      box-shadow: inset 0 2px 0 #f4f4f4;

      &:hover {
        background-color: var(--color-dark-white) !important;
      }
    }

    @modifier fit {
      border-right: 0;
      border-bottom: 0;

      & th.gutter, td.gutter {
        border-right-width: 1px;
      }
    }

    & th {
      white-space: nowrap;
      overflow: hidden;
    }

    & th, td {
      height: 40px;
      min-width: 0;
      box-sizing: border-box;
      text-overflow: ellipsis;
      vertical-align: middle;
      position: relative;

      @when center {
        text-align: center;
      }

      @when left {
        text-align: left;
      }

      @when right {
        text-align: right;
      }
    }

    & th.is-leaf, td {
      border-bottom: 1px solid var(--table-border-color);
    }

    @modifier border {
      & th, td {
        border-right: 1px solid var(--table-border-color);
      }

      & th {
        border-bottom: 1px solid var(--table-border-color);
      }
    }

    @modifier hidden {
      visibility: hidden;
    }

    & th {
      background-color: var(--table-header-background);
      text-align: left;
    }

    & th > div {
      display: inline-block;
      padding-left: 18px;
      padding-right: 18px;
      line-height: 40px;
      box-sizing: border-box;
      overflow: hidden;
      white-space: nowrap;
      text-overflow: ellipsis;
    }

    & td > div {
      box-sizing: border-box;
    }

    @e fixed, fixed-right {
      position: absolute;
      top: 0;
      left: 0;
      box-shadow: 1px 0 8px #d3d4d6;
      overflow-x: hidden;

      &::before {
        content: '';
        position: absolute;
        left: 0;
        bottom: 0;
        width: 100%;
        height: 1px;
        background-color: var(--table-border-color);
        z-index: 4;
      }
    }

    @e fixed-right-patch {
      position: absolute;
      top: -1px;
      right: 0;
      background-color: var(--table-header-background);
      border-bottom: 1px solid var(--table-border-color);
    }

    @e fixed-right {
      top: 0;
      left: auto;
      right: 0;

      box-shadow: -1px 0 8px #d3d4d6;

      .el-table__fixed-header-wrapper,
      .el-table__fixed-body-wrapper,
      .el-table__fixed-footer-wrapper {
        left: auto;
        right: 0;
      }
    }

    @e fixed-header-wrapper {
      position: absolute;
      left: 0;
      top: 0;
      z-index: 3;

      & thead div {
        background-color: var(--table-header-background);
        color: var(--table-text-color);
      }
    }

    @e fixed-footer-wrapper {
      position: absolute;
      left: 0;
      bottom: 0;
      z-index: 3;

      & tbody td {
        border-top: 1px solid var(--table-border-color);
        background-color: var(--table-footer-background);
        color: var(--table-text-color);
      }
    }

    @e fixed-body-wrapper {
      position: absolute;
      left: 0;
      top: 37px;
      overflow: hidden;
      z-index: 3;
    }

    @e header-wrapper, body-wrapper, footer-wrapper {
      width: 100%;
    }

    @e footer-wrapper {
      margin-top: -1px;
      td {
        border-top: 1px solid var(--table-border-color);
      }
    }

    @e header, body, footer {
      table-layout: fixed;
    }

    @e header-wrapper, footer-wrapper {
      overflow: hidden;

      & thead div {
        background-color: var(--table-header-background);
        color: var(--table-text-color);
      }

      & tbody td {
        background-color: var(--table-footer-background);
        color: var(--table-text-color);
      }
    }

    @e body-wrapper {
      overflow: auto;
      position: relative;
    }

    & th.required > div::before {
      display: inline-block;
      content: "";
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: #ff4d51;
      margin-right: 5px;
      vertical-align: middle;
    }

    & th > .cell {
      position: relative;
      word-wrap: normal;
      text-overflow: ellipsis;
      display: inline-block;
      line-height: 30px;
      vertical-align: middle;
      width: 100%;
      box-sizing: border-box;

      &.highlight {
        color: var(--color-primary);
      }
    }

    & .caret-wrapper {
      position: relative;
      cursor: pointer;
      display: inline-block;
      vertical-align: middle;
      margin-left: 5px;
      margin-top: -2px;
      width: 16px;
      height: 30px;
      overflow: initial;
    }

    & .sort-caret {
      display: inline-block;
      width: 0;
      height: 0;
      border: 0;
      content: "";
      position: absolute;
      left: 3px;
      z-index: 2;

      &.ascending {
        top: 9px;
        border-top: none;
        border-right: 5px solid transparent;
        border-bottom: 5px solid var(--color-light-silver);
        border-left: 5px solid transparent;
      }

      &.descending {
        bottom: 9px;
        border-top: 5px solid var(--color-light-silver);
        border-right: 5px solid transparent;
        border-bottom: none;
        border-left: 5px solid transparent;
      }
    }

    & .ascending .sort-caret.ascending {
      border-bottom-color: var(--color-extra-light-black);
    }

    & .descending .sort-caret.descending {
      border-top-color: var(--color-extra-light-black);
    }

    & th.gutter, td.gutter {
      width: 15px;
      border-right-width: 0;
      border-bottom-width: 0;
      padding: 0;
    }

    & td.gutter {
      width: 0;
    }

    & td.is-hidden, th.is-hidden {
      > * {
        visibility: hidden;
      }
    }

    & .cell {
      box-sizing: border-box;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: normal;
      word-break: break-all;
      line-height: 24px;
      padding-left: 18px;
      padding-right: 18px;
    }

    & tr input[type="checkbox"] {
      margin: 0;
    }

    & tr {
      background-color: var(--color-white);
    }

    @modifier striped {
      & .el-table__body {
        & tr.el-table__row--striped {
          td {
            background: #FAFAFA;
            background-clip: padding-box;
          }

          &.current-row td {
            background: color(var(--color-primary) tint(92%));
          }
        }
      }
    }

    @e body {
      tr.hover-row {
        &, &.el-table__row--striped {
          &, &.current-row {
            > td {
              background-color: var(--color-extra-light-gray);
            }
          }
        }
      }

      tr.current-row > td {
        background: color(var(--color-primary) tint(92%));
      }
    }

    @e column-resize-proxy {
      position: absolute;
      left: 200px;
      top: 0;
      bottom: 0;
      width: 0;
      border-left: 1px solid var(--table-border-color);
      z-index: 10;
    }

    & .hidden-columns {
      visibility: hidden;
      position: absolute;
      z-index: -1;
    }

    @e column-filter-trigger {
      display: inline-block;
      line-height: 34px;
      margin-left: 5px;
      cursor: pointer;

      & i {
        color: var(--color-light-silver);
      }
    }

    @modifier enable-row-transition {
      .el-table__body td {
        transition: background-color .25s ease;
      }
    }

    @modifier enable-row-hover {
      .el-table__body tr:hover > td {
        background-color: var(--color-extra-light-gray);
        background-clip: padding-box;
      }
    }

    @modifier fluid-height {
      .el-table__fixed,
      .el-table__fixed-right {
        bottom: 0;
        overflow: hidden;
      }
    }
  }
}
